package com.alpaak;

import com.alpaak.conifg.AppConif;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

/**
 * @author alpaak
 * @des: TODO
 * @date 2020/4/18 11:51
 */
public class AlpaakApplication {
	public static void main(String[] args) {
		AnnotationConfigApplicationContext anno = new AnnotationConfigApplicationContext(AppConif.class);
//		Object a = anno.getBean("a");　
//		System.out.println("扫描到的a对象：　"+a);
	}


	/**
	 *类实例化的过程
	 *
	 * 1  scan--BeanDefinition bd-- 放入 BeanDefinitionMap/ BeanDefinitionNames
	 * 2  遍历BeanDefinitionMap
	 * 3  validate
	 *
	 * 4  得到class
	 *
	 * 5  推断构造方法
	 *
	 * 6  反射实例化对象 （还不是一个完整的spring bean）
	 *
	 * 7  合并Definition
	 *
	 * 8  提前暴露一个bean工厂对象
	 *
	 * 9  填充属性--自动注入
	 *
	 * 10  执行部分aware接口 --很复杂
	 *
	 * 11  执行部分aware接口 -- 执行spring  生命周期回调方法
	 *
	 * 12  接口版的生命周期回调方法
	 *
	 * 13  beanPostprocessor 的前置方法 aop增强在此
	 *
	 * 14  bean放入单列池中
	 *
	 * 问题1、 spring 怎么实例化一个对象
	 * 1、xml或者注解收集类信息写入beanDefinition对象
	 * 2、
	 */
}
